#ifndef IconProviderH
#define IconProviderH
//============================================================================
/// \file   IconProvider.h
/// \author Uwe Kindler
/// \date   18.10.2019
/// \brief  Declaration of CIconProvider
//============================================================================

//============================================================================
//                                   INCLUDES
//============================================================================
#include <QIcon>

#include "ads_globals.h"

namespace ads
{

struct IconProviderPrivate;

/**
 * 该类提供了高级 docking 系统所需的所有图标。
 * IconProvider 允许用户在无法使用样式表时注册自定义图标。
 */
class ADS_EXPORT CIconProvider
{
private:
    IconProviderPrivate* d; ///< 私有数据 (pimpl)
    friend struct IconProviderPrivate;

public:
    /**
     * 默认构造函数
     */
    CIconProvider();

    /**
     * 虚析构函数
     */
    virtual ~CIconProvider();

    /**
     * 如果已注册自定义图标，则返回自定义图标；如果未注册自定义图标，则返回空图标。
     */
    QIcon customIcon(eIcon IconId) const;

    /**
     * 为给定的 IconId 注册自定义图标。
     */
    void registerCustomIcon(eIcon IconId, const QIcon& icon);
};

// class IconProvider

} // namespace ads


//---------------------------------------------------------------------------
#endif // IconProviderH
